首页>代码>基于SpringBoot+Vue实现的学生选课管理系统>/源代码/CourseManager/CourseManagerApi - idea/src/main/java/com/rabbiter/cm/config/aop/ControllerLogAspect.java
//package com.rainng.coursesystem.config.aop;
//
//import com.rainng.coursesystem.dao.mongo.LogDAO;
//import com.rainng.coursesystem.manager.LoginStatusManager;
//import com.rainng.coursesystem.model.bo.LoginStatusBO;
//import com.rainng.coursesystem.model.constant.HttpStatusCode;
//import com.rainng.coursesystem.model.entity.mongo.LogEntity;
//import com.rainng.coursesystem.model.vo.response.ResultVO;
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
//import org.aspectj.lang.reflect.MethodSignature;
//import org.springframework.stereotype.Component;
//import org.springframework.web.context.request.RequestContextHolder;
//import org.springframework.web.context.request.ServletRequestAttributes;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//@Aspect
//@Component
//public class ControllerLogAspect {
//    private static final String PACKAGE_PREFIX = "com.rainng.coursesystem.controller.";
//    private static final String PACKAGE_PREFIX2 = "com.rainng.coursesystem.config.handler.BindExceptionHandler.";
//    private static final String CONTROLLER_POSTFIX = "Controller.";
//
//    private final LoginStatusManager loginStatusManager;
//    private final LogDAO logDAO;
//
//    public ControllerLogAspect(LoginStatusManager loginStatusManager, LogDAO logDAO) {
//        this.loginStatusManager = loginStatusManager;
//        this.logDAO = logDAO;
//    }
//
//    @Pointcut("execution(public * com.rainng.coursesystem.controller..*.*(..)) || " +
//            "execution(public * com.rainng.coursesystem.config.handler.BindExceptionHandler.handleBindException(..))")
//    public void controllerLog() {
//    }
//
//    @Around("controllerLog()")
//    public Object around(ProceedingJoinPoint joinPoint) {
//        long startTime = System.currentTimeMillis();
//
//        LogEntity log = new LogEntity();
//        logRequest(log, joinPoint);
//
//        Object result = null;
//        try {
//            result = joinPoint.proceed();
//        } catch (Throwable ex) {
//            ex.printStackTrace();
//            log.setException(ex.getMessage());
//            setResponseCode(HttpStatusCode.INTERNAL_SERVER_ERROR);
//            result = new ResultVO(ResultVO.SERVER_ERROR, "未知错误", null);
//        }
//
//        logResult(log, result, System.currentTimeMillis() - startTime);
//        logDAO.insert(log);
//
//        return result;
//    }
//
//    private void logRequest(LogEntity logEntity, ProceedingJoinPoint joinPoint) {
//        HttpServletRequest request = getRequest();
//        if (request != null) {
//            LoginStatusBO loginStatus = loginStatusManager.getLoginStatus(request.getSession());
//            String requestUrl = request.getRequestURI();
//            if (request.getQueryString() != null) {
//                requestUrl += "?" + request.getQueryString();
//            }
//
//            logEntity.setRequestUrl(requestUrl);
//            logEntity.setUserId(loginStatus.getUserId());
//            logEntity.setUserType(loginStatus.getUserType());
//        }
//
//        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
//        String businessTarget = signature.getDeclaringTypeName() + "." + signature.getMethod().getName();
//        businessTarget = businessTarget
//                .replace(PACKAGE_PREFIX, "")
//                .replace(CONTROLLER_POSTFIX, ".")
//                .replace(PACKAGE_PREFIX2, "");
//        logEntity.setBusinessTarget(businessTarget);
//    }
//
//    private void logResult(LogEntity log, Object result, long executeTime) {
//        if (!(result instanceof ResultVO)) {
//            return;
//        }
//
//        ResultVO resultVO = (ResultVO) result;
//        log.setResultCode(resultVO.getCode());
//        log.setMessage(resultVO.getMessage());
//        log.setExecuteTime(executeTime);
//    }
//
//    private HttpServletRequest getRequest() {
//        ServletRequestAttributes attributes = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes());
//        if (attributes == null) {
//            return null;
//        }
//
//        return attributes.getRequest();
//    }
//
//    private void setResponseCode(int statusCode) {
//        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
//        if (requestAttributes == null) {
//            return;
//        }
//        HttpServletResponse response = requestAttributes.getResponse();
//        if (response == null) {
//            return;
//        }
//
//        response.setStatus(statusCode);
//    }
//}
最近下载更多
大神程序员  LV23 7月2日
tongguan00  LV2 4月1日
wwwww816  LV5 3月24日
waxy_123  LV2 2024年12月27日
pangzhihui  LV14 2024年12月4日
Daima000  LV4 2024年12月3日
zolscy  LV24 2024年11月24日
sgm123456  LV14 2024年10月12日
komejikoishi  LV2 2024年9月22日
微信网友_7044194812350464  LV8 2024年9月13日
最近浏览更多
大神程序员  LV23 7月2日
暂无贡献等级
2578193624  LV2 6月8日
newhaijun  LV16 6月7日
ES大兵  LV11 6月6日
林品如  LV1 5月17日
5418888  LV3 5月13日
ljy050925 5月13日
暂无贡献等级
luhong  LV4 5月6日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友